# Define SciTE settings for Specman E language files.

# specman files
file.patterns.specman=*.e

filter.specman=Specman (e)|\
$(file.patterns.specman)|

lexer.$(file.patterns.specman)=specman

keywords.$(file.patterns.specman)= \
struct unit \
integer real bool int long uint nibble byte bits bytes bit time string \
var instance event \
verilog vhdl \
on compute start expect check that routine \
specman is also first only with like \
list of all radix hex dec bin ignore illegal \
traceable untraceable \
cover using count_only trace_only at_least transition item ranges \
cross text call task within \
packing low high \
locker address \
body code vec chars \
byte_array external_pointer \
choose matches \
if then else when try \
case casex casez default \
and or not xor \
until repeat while for from to step each do break continue \
before next always -kind network \
index it me in new return result select \
cycle sample events forever \
wait  change  negedge rise fall delay sync sim true detach eventually emit \
gen keep keeping soft before \
define as computed type extend \
variable global sys \
import \
untyped symtab ECHO DOECHO \
initialize non_terminal testgroup delayed exit finish \
out append print outf appendf \
post_generate pre_generate setup_test finalize_test extract_test \
init run copy as_a a set_config dut_error add clear lock quit \
lock unlock release swap quit to_string value stop_run \
crc_8 crc_32 crc_32_flip get_config add0 all_indices and_all \
apply average count delete exists first_index get_indices \
has insert is_a_permutation is_empty key key_exists key_index \
last last_index max max_index max_value min min_index \
min_value or_all pop pop0 push push0 product resize reverse \
sort split sum top top0 unique clear is_all_iterations \
get_enclosing_unit hdl_path exec deep_compare deep_compare_physical \
pack unpack warning error fatal \
size \
files load module ntv source_ref script read write \
initial idle others posedge clock cycles \
statement action command member exp block num file

# keywords2 is for highlighting secondary keywords
keywords2.$(file.patterns.specman)= \
TRUE FALSE \
MAX_INT MIN_INT NULL UNDEF \

# keywords3 is for sequence and eRM keywords and functions
keywords3.$(file.patterns.specman)= \
any_sequence_item sequence any_sequence_driver driver \
created_driver  parent_sequence \
bfm_interaction_mode PULL_MODE PUSH_MODE MAIN SIMPLE RANDOM \
max_random_count max_random_depth num_of_last_items \
NORMAL NONE FULL LOW HIGH MEDIUM logger message \
get_tags show_units show_actions show_message ignore_tags \
set_style set_screen set_file set_flush_frequency \
set_format set_units set_actions at_message_verbosity \
short_name short_name_path short_name_style \
\
private protected package rerun any_env \
unqualified_clk clk reset_start reset_end \
message_logger verbosity tags to_file \
\
body pre_body post_body get_next_item send_to_bfm \
get_depth get_driver nice_string get_index grab \
is_blocked is_relevant ungrab mid_do post_do post_trace \
pre_do current_grabber get_current_item get_num_items_sent \
get_sequence_trace_list get_trace_list is_grabbed \
try_next_item check_is_relevant delay_clock \
get_sub_drivers regenerate_data wait_for_sequences \
stop

# keywords4 is for highlighting user defined keywords or function calls, highlighted in style 19
keywords4.$(file.patterns.specman)=

word.chars.specman=$(chars.alpha)$(chars.numeric)_#
word.characters.$(file.patterns.specman)=$(word.chars.specman)
comment.block.specman=//~
comment.block.at.line.start.specman=1
comment.stream.start.specman=
comment.stream.end.specman=
comment.box.start.specman=
comment.box.middle.specman=
comment.box.end.specman=

#~ statement.indent.$(file.patterns.specman)=5  if else try \
#~ case casex casez default \
#~ until repeat while for do \
#~ struct unit extend when
#~ statement.end.$(file.patterns.specman)=10 ;
#~ statement.lookback.$(file.patterns.specman)=20
#~ block.start.$(file.patterns.specman)=10 {
#~ block.end.$(file.patterns.specman)=10 }

indent.maintain.$(file.patterns.specman)=1;

#autocomplete.specman.fillups=(

preprocessor.symbol.$(file.patterns.specman)=#
preprocessor.start.$(file.patterns.specman)=ifdef ifndef
preprocessor.middle.$(file.patterns.specman)=else
preprocessor.end.$(file.patterns.specman)=}


# Specman E styles

# Default
style.specman.32=$(font.base)
# White space
style.specman.0=fore:#808080
# Code
style.specman.1=$(font.base)
# Line Comment
style.specman.2=$(colour.code.comment.line),$(font.code.comment.line)
# Line Bang Comment
style.specman.3=fore:red
# Number
style.specman.4=$(colour.number)
# Keyword
style.specman.5=$(colour.keyword),bold
# Double quoted string
style.specman.6=$(colour.string)
# Keyword 2
style.specman.7=fore:#B00040
# Keyword 3
style.specman.8=fore:#804080,bold
# Preprocessor
style.specman.9=$(colour.preproc)
# Operators
style.specman.10=$(colour.operator),bold
# Identifiers
style.specman.11=
# End of line where string is not closed
style.specman.12=fore:#000000,$(font.monospace),back:#E0C0E0,eolfilled
# Regexp tag
style.specman.13=fore:#007F00,back:#E0FFE0
# HDL Signal
style.specman.14=fore:#00005F
# User defined
style.specman.15=back:#E0F0FF

# Braces are only matched in operator style
braces.specman.style=10

